import { provide,inject,Context} from 'midway';
import {IVerificaService} from '../interface';
import {randomNum} from '../utils/randomNumber'
const SMSClient = require('@alicloud/sms-sdk')
@provide('verificationService')
export class VerificaService implements IVerificaService {
//   constructor(
//     @inject() private readonly em: EntityManager,
//   ) {
//   }
  /**
   * 新增
   * @param user 用户实体
   */
  @inject()
  ctx: Context;
 async getPhone(phone:String):Promise<String>{

    const code =await randomNum(6)

    /**
 * 云通信基础能力业务短信发送、查询详情以及消费消息示例，供参考。
 * Created on 2017-07-31
 */
// ACCESS_KEY_ID/ACCESS_KEY_SECRET 根据实际申请的账号信息进行替换
const accessKeyId = 'LTAI4GJxuYNSR2f6abTz5e1N'
const secretAccessKey = 'bp5AKefnT9z9RxG4NG2VC1n02DUSnm'
//初始化sms_client
let smsClient = new SMSClient({accessKeyId, secretAccessKey})
//发送短信
 const {Message} = await smsClient.sendSMS({
    PhoneNumbers: phone,//必填:待发送手机号。支持以逗号分隔的形式进行批量调用，批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式；发送国际/港澳台消息时，接收号码格式为：国际区号+号码，如“85200000000”
    SignName: '竹简',//必填:短信签名-可在短信控制台中找到
    TemplateCode: 'SMS_191195809',//必填:短信模板-可在短信控制台中找到，发送国际/港澳台消息时，请使用国际/港澳台短信模版
    TemplateParam: `{"code":${code}}`//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时。
})
if(Message=='OK'){
  this.ctx.session.verification= [{phone,code}]
}
return Message
  }
}